package com.weds.edjk.mapper;

import com.weds.core.annotation.MyBatisDao;
import com.weds.edjk.entity.KtRecordEntity;
import com.weds.edjk.entity.UserEntity;
import com.weds.edjk.entity.UserFxEntity;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @Author
 * @Description 管理
 * @Date 2020-06-06
 */
@MyBatisDao
public interface KtRecordMapper {
    /**
     * 主键删除
     * @param sj
     * @param userSerial
     * @param bh
     * @return
     */
    int deleteByPrimaryKey(@Param("sj") Date sj, @Param("userSerial") Integer userSerial, @Param("bh") Integer bh);

    /**
     * 新增
     * @param record
     * @return
     */
    int insert(KtRecordEntity record);

    /**
     * 批量新增
     * @param list
     * @return
     */
    int insertBatch(@Param("list") List<KtRecordEntity> list);

    /**
     * 条件新增
     * @param record
     * @return
     */
    int insertSelective(KtRecordEntity record);

    /**
     * 主键查询
     * @param sj
     * @param userSerial
     * @param bh
     * @return
     */
    KtRecordEntity selectByPrimaryKey(@Param("sj") Date sj, @Param("userSerial") Integer userSerial, @Param("bh") Integer bh);

    /**
     * 选择更新
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(KtRecordEntity record);

    /**
     * 全部更新
     * @param record
     * @return
     */
    int updateByPrimaryKey(KtRecordEntity record);

    /**
     * 条件查询列表
     * @param record
     * @return
     */
    List<KtRecordEntity> selectListByEntity(KtRecordEntity record);

    /**
     * 批量删除
     * @param list
     * @return
     */
    int deleteBatchByKeys(@Param("list") List<KtRecordEntity> list);

    /**
     *
     * @param sj
     * @param fx
     * @return
     */
    int countTodayFx(@Param("sj") Date sj, @Param("fx") Short fx);


    List<UserFxEntity> selectTodayFx(@Param("sj") Date sj);

    /**
     * 最近一条考勤记录
     * @return
     */
    KtRecordEntity selectCurrentKtJl();
    /**
     * 根据用户编号查询前10条考勤记录
     * @param userSerial
     * @return
     */
    List<KtRecordEntity> selectTopTenKtJlByUserSerial(String userSerial);
    /**
     * 查询用户信息
     * @param userSerial
     * @return
     */
    UserEntity selectUserByUserSerial(String userSerial);

    /**
     * 查询指定日期的预警记录
     * @param date
     * @return
     */
    int selectWarnCount(String date);
    /**
     * 查询指定日期的内部人员打卡记录
     * @param date
     * @return
     */
    int selectInsideCount(String date);
    /**
     * 查询指定日期的少数名族打卡
     * @param date
     * @return
     */
    int selectEthnicMinorityCount(String date);
    /**
     * 查询指定日期的访客数量
     * @param date
     * @return
     */
    int selectVisCount(String date);

    /**
     * 指定日期的预警列表
     * @param date
     * @return
     */
    List<KtRecordEntity> selectWarn(String date);

}